
/*
Necesitamos trabajar con  la dirección de correo electrónico de N alumnos. En el caso 
que que algún alumno no disponga de dirección de correo electrónico, le pediremos su 
número de teléfonoEn el caso de que tampoco disponga de número de teléfono, nos bastará 
con su dirección postal.Se pide:o	Pedir datos a los usuarios (preguntar si van a 
facilitarnos su email, tfno o dirección, y actuar en consecuencia).o	Una vez introducidos 
dichos datos, mostrarlos en la pantalla.
*/

#include <conio.h>
#include <stdio.h>
#include <ctype.h>
#define N 2

/***************************************************************************************/
typedef union
 {
 	char email[100];
 	char telefono[15];
 	char postal [100];
 } Udatos;

 typedef enum {si,no} booleano;
	
/***************************************************************************************/
/*Prototipos*/

void inicializa(Udatos *);
void menu(Udatos *);
void lee_cadena(int,char *);
void muestra(Udatos *);
/***************************************************************************************/
void inicializa(Udatos *alumno)
/*Inicializa el registro de un alumno*/
{
	*alumno->email		='\0';
	*alumno->telefono	='\0';
	*alumno->postal		='\0';
}
/***************************************************************************************/
void lee_cadena(int longitud, char *cadena)
/*Introduce los datos del alumno, letra a letra*/
{
 char *ptro;
 int i;
 char letra;

 cadena[0]='\0';
 ptro=cadena;
 
 for (i=0;i<longitud;i++)
 {
	letra=getche();
	if (letra=='\r')
	{
		*ptro='\0';
		i=longitud;
	}
	else
	{
		*ptro=letra;
		ptro++;
	}
 }
}
/***************************************************************************************/
void muestra(Udatos *alumno)
/*Muestra los datos del alumno*/
/*Alumno->Postal es la cadena m s larga*/
{
	printf("Datos del alumno: %s.\n",alumno->postal);
}
/***************************************************************************************/
void menu(Udatos *alumno)
/*Muestra el men£ del programa y llama a las funciones seg£n la opci¢n
  elegida.
*/
{
 booleano correcto;
 char opcion;


	do
	{
		correcto=si;
		printf("Ud. va a introducir su:\n");
		printf("(E) email.\n");
		printf("(T) teléfono \n");
		printf("(D) Dirección Postal\n");
		opcion=getche();
		opcion=toupper(opcion);

		switch (opcion)
		{
			case 'E': {
							printf("Introduce Email: ");
							lee_cadena(100,alumno->email);
							printf("\n\n");
							break;
						 }

			case 'T': {

	   						printf("Introduce teléfono: ");
							lee_cadena(15,alumno->telefono);
							printf("\n\n");
							break;
						 }

			case 'D': {
							printf("Introduce Dirección: ");
							lee_cadena(100,alumno->postal);
							printf("\n\n");
							break;
						 }

	   		default : correcto=no;
	   	}
	   }
	while (correcto==no);
}
/***************************************************************************************/
void main(void)
{
	int i;
	Udatos alumnos[N];
	Udatos *puntero;


   clrscr();
   puntero=alumnos;
   for (i=0;i<N;i++)   /*Inicializar las cadenas*/
   {
	inicializa(puntero);
	puntero++;
   }

   puntero=alumnos;
   for (i=0;i<N;i++)   /*Introduce datos*/
   {
/**/
	printf("Alumno %i:\n",i);
	menu(puntero);
	puntero++;

   }

   puntero=alumnos;
   for (i=0;i<N;i++) 	  /*Mostrar resultados por pantalla*/
   {
	printf("Alumno %i. \n",i);
	muestra(puntero);
	puntero++;
   }
}
/***************************************************************************************/